#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>
#include <string.h>

// #include <stdlib.h>　包含内容
// atoi//字符串转int类型
// atof//字符串转float类型
// atol//字符串转long类型
// atoll//字符串转long long类型
// strtod //字符串转double类型
// strtof//字符串转float类型
// strtol参数，__nptr：起始地址，__endptr：返回结束地址(不需要，带入NULL参数即可)，__base：几进制．
// strtol//字符串转long类型
// strtoul//字符串转unsigned long类型
// strtoll//字符串转long long类型
// strtoull//字符串转unsigned long long类型

// rand//获得随机数
// srand//初始化随机数发生器．

// malloc//动态分配空间，不初始化
// calloc//动态分配空间，初始化为0
// realloc//重新分配内存空间．原有内容保留．
// free//释放内存．

// abort//终止进程，不会进行一些常规的清除工作，比如释放内存等。
// exit//退出程序，清理程序占用的资源．
// atexit//注册一个函数，在exit执行时调用．

// getenv//获得环境变量．

// system//调用系统命令．

// bsearch//排序．
// qsort//在有序数组，二分法查找．

// abs//绝对值
// labs//长整型绝对值．

// typedef struct
// {
//   int quot;			/* Quotient.  */
//   int rem;			/* Remainder.  */
// } div_t;
// div//除法，返回div_t，div_t.quot是商，div_t.rem是余数．
// ldiv//和div一样，long除法
// lldiv//和div一样，long long除法

int main(int argc, char **argv)
{
    const char *tmpStrPtr;
    {
        //取数据时，遇到非数字结束．
        tmpStrPtr = "123int";
        int tmpVal = atoi(tmpStrPtr);
        printf("[%s,%d], value = %d\n", __FILE__, __LINE__, tmpVal);
    }
    {
        tmpStrPtr = "-1";
        long tmpVal = atol(tmpStrPtr);
        printf("[%s,%d], value = %ld\n", __FILE__, __LINE__, tmpVal);
    }
    {
        //取数据时，遇到非数字结束．
        tmpStrPtr = "long123456789123456";
        long long tmpVal = atoll(tmpStrPtr);
        printf("[%s,%d], value = %lld\n", __FILE__, __LINE__, tmpVal);
    }
    {
        tmpStrPtr = "1.513f";
        float tmpVal = atof(tmpStrPtr);
        printf("[%s,%d], value = %f\n", __FILE__, __LINE__, tmpVal);
    }

    {
        tmpStrPtr = "1234abcd";
        char *tmpEndPtr;
        int tmpVal = strtol(tmpStrPtr, &tmpEndPtr, 10);
        printf("[%s,%d], value = %d, begin:%p,end:%p\n", __FILE__, __LINE__, tmpVal, tmpStrPtr, tmpEndPtr);
    }
    {
        tmpStrPtr = "1234abcd";
        char *tmpEndPtr;
        int tmpVal = strtol(tmpStrPtr, &tmpEndPtr, 16);
        printf("[%s,%d], value = %d, begin:%p,end:%p\n", __FILE__, __LINE__, tmpVal, tmpStrPtr, tmpEndPtr);
    }
    {
        tmpStrPtr = "1.234";
        float tmpVal = strtof(tmpStrPtr, NULL);
        printf("[%s,%d], value = %f, begin:%p\n", __FILE__, __LINE__, tmpVal, tmpStrPtr);
    }

    return 1;
}
